/****************************************************************************/
/** \file demo_timer.c
**
**  
**
**	History:
**	
*****************************************************************************/
/****************************************************************************/
/*	include files
*****************************************************************************/
#include "BSP_timer.h"

/****************************************************************************/
/*	Local pre-processor symbols('#define')
****************************************************************************/

/****************************************************************************/
/*	Global variable definitions(declared in header file with 'extern')
****************************************************************************/

/****************************************************************************/
/*	Local type definitions('typedef')
****************************************************************************/

/****************************************************************************/
/*	Local variable  definitions('static')
****************************************************************************/

/****************************************************************************/
/*	Local function prototypes('static')
****************************************************************************/

/****************************************************************************/
/*	Function implementation - global ('extern') and local('static')
****************************************************************************/
/******************************************************************************
** \brief	 TMR0_Config
** \param [in] 
**            	
** \return  none
** \note  
******************************************************************************/
void TMR0_Config(void)
{

	/*
	(1)设置Timer的运行模式
	*/
	TMR_ConfigRunMode(TMR0, TMR_MODE_TIMING,TMR_TIM_16BIT);	
	/*
	(2)设置Timer 运行时钟
	*/
	TMR_ConfigTimerClk(TMR0, TMR_CLK_DIV_4);						/*Fsys = 24Mhz，Ftimer = 2Mhz,Ttmr=0.5us*/
																	/*Fsys = 24Mhz, Ftimer = 8/4 = 2Mhz,Ttmr=0.5us*/
	/*
	(3)设置Timer周期
	*/	
	TMR_ConfigTimerPeriod(TMR0, (65536-2000)>>8, 65536-2000); 				// (256-200)*0.5us = 100us,递增计数
		
	/*
	(4)开启中断
	*/
	TMR_EnableOverflowInt(TMR0);

	/*
	(5)设置Timer中断优先级
	*/	
	IRQ_SET_PRIORITY(IRQ_TMR0,IRQ_PRIORITY_LOW);
	IRQ_ALL_ENABLE();	

	/*
	(6)开启Timer
	*/
	TMR_Start(TMR0);

/*
//	(1)设置Timer的运行模式
//	*/
//	TMR_ConfigRunMode(TMR0, TMR_MODE_TIMING,TMR_TIM_AUTO_8BIT);	
//	/*
//	(2)设置Timer 运行时钟
//	*/
//	TMR_ConfigTimerClk(TMR0, TMR_CLK_DIV_4);						/*Fsys = 24Mhz，Ftimer = 2Mhz,Ttmr=0.5us*/
//																	/*Fsys = 24Mhz, Ftimer = 8/4 = 2Mhz,Ttmr=0.5us*/
//	/*
//	(3)设置Timer周期
//	*/	
//	TMR_ConfigTimerPeriod(TMR0, 256-200, 256-200); 				// (256-200)*0.5us = 100us,递增计数
//		
//	/*
//	(4)开启中断
//	*/
//	TMR_EnableOverflowInt(TMR0);

//	/*
//	(5)设置Timer中断优先级
//	*/	
//	IRQ_SET_PRIORITY(IRQ_TMR0,IRQ_PRIORITY_HIGH);
//	IRQ_ALL_ENABLE();	

//	/*
//	(6)开启Timer
//	*/
//	TMR_Start(TMR0);
}

/******************************************************************************
** \brief	 TMR0_Config
** \param [in] 
**            	
** \return  none
** \note  
******************************************************************************/
void TMR1_Config(void)
{

	/*
	(1)设置Timer的运行模式
	*/
	TMR_ConfigRunMode(TMR1, TMR_MODE_TIMING,TMR_TIM_16BIT);	
	/*
	(2)设置Timer 运行时钟
	*/
	TMR_ConfigTimerClk(TMR1, TMR_CLK_DIV_4);						/*Fsys = 24Mhz，Ftimer = 2Mhz,Ttmr=0.5us*/
	/*
	(3)设置Timer周期
	*/	
	TMR_ConfigTimerPeriod(TMR1, (65536-2000)>>8, 65536-2000); 				// 1ms
		
	/*
	(4)开启中断
	*/
	TMR_EnableOverflowInt(TMR1);

	/*
	(5)设置Timer中断优先级
	*/	
	IRQ_SET_PRIORITY(IRQ_TMR1,IRQ_PRIORITY_LOW);
	IRQ_ALL_ENABLE();	

	/*
	(6)开启Timer
	*/
	TMR_Start(TMR1);

//	/*
//	(1)设置Timer的运行模式
//	*/
//	TMR_ConfigRunMode(TMR1, TMR_MODE_TIMING,TMR_TIM_AUTO_8BIT);	
//	/*
//	(2)设置Timer 运行时钟
//	*/
//	TMR_ConfigTimerClk(TMR1, TMR_CLK_DIV_4);						/*Fsys = 24Mhz，Ftimer = 2Mhz,Ttmr=0.5us*/
//																	/*Fsys = 24Mhz, Ftimer = 8/4 = 2Mhz,Ttmr=0.5us*/
//	/*
//	(3)设置Timer周期
//	*/	
//	TMR_ConfigTimerPeriod(TMR1, 256-200, 256-200); 				// (256-200)*0.5us = 100us,递增计数	
//		
//	/*
//	(4)开启中断
//	*/
//	TMR_EnableOverflowInt(TMR1);

//	/*
//	(5)设置Timer中断优先级
//	*/	
//	IRQ_SET_PRIORITY(IRQ_TMR1,IRQ_PRIORITY_LOW);
//	IRQ_ALL_ENABLE();	

//	/*
//	(6)开启Timer
//	*/
//	TMR_Start(TMR1);
}

void TMR2_Config(void)
{
	/*
	(1)设置Timer的运行模式
	*/
	TMR2_ConfigRunMode(TMR2_MODE_TIMING, TMR2_AUTO_LOAD);				
	/*
	(2)设置Timer 运行时钟
	*/
	TMR2_ConfigTimerClk(TMR_CLK_DIV_4);						/*Fsys = 24Mhz，Ftimer = 2Mhz, Ttmr=0.5us*/
	/*
	(3)设置Timer定时
	*/
	TMR2_ConfigTimerPeriod((65536 - 2000));                 			   /* Ttimer * 200 = 100us, 向上计数溢出*/ 
	/*
	(4)开启中断
	*/
	TMR2_EnableOverflowInt();
	/*
	(5)设置Timer中断优先级
	*/	
	IRQ_SET_PRIORITY(IRQ_TMR2,IRQ_PRIORITY_LOW);
	
	TMR2_AllIntEnable();
	IRQ_ALL_ENABLE();
	/*
	(6)开启Timer
	*/
	TMR2_Start();
}
